﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NHibernate;
using System.Data;
using System.Data.SqlClient;

namespace AgenciaViajeServices.Persistencia
{
    public class BaseDAO1<Entidad, Id>
    {
        public Entidad Crear(Entidad entidad)
        {
            using (ISession sesion = NHibernateHelper1.ObtenerSesion())
            {
                sesion.Save(entidad);
                sesion.Flush();
            }
            return entidad;
        }

       
        public Entidad Obtener(Id id)
        {
            using (ISession sesion = NHibernateHelper1.ObtenerSesion())
            {
                return sesion.Get<Entidad>(id);
            }
        }

    

        public Entidad Modificar(Entidad entidad)
        {
            using (ISession sesion = NHibernateHelper1.ObtenerSesion())
            {
                sesion.Update(entidad);
                sesion.Flush();
            }
            return entidad;
        }

        public void Eliminar(Entidad entidad)
        {
            using (ISession sesion = NHibernateHelper1.ObtenerSesion())
            {
                sesion.Delete(entidad);
                sesion.Flush();
            }
        }
        public ICollection<Entidad> ListarTodos()
        {
            using (ISession sesion = NHibernateHelper1.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(Entidad));
                return busqueda.List<Entidad>();
            }
        }

        public DataSet obtenersql(string sql)
        {
            SqlConnection sqlConn = new SqlConnection(ConexionUtil1.ObtenerCadena());
            SqlDataAdapter sqlAdapt = new SqlDataAdapter(sql, sqlConn);
            SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlAdapt);
            DataSet sqlSet = new DataSet();
            sqlAdapt.Fill(sqlSet);
            sqlAdapt.Dispose();
            sqlConn.Close();
            return sqlSet;
        }
    }
}